iT邦幫忙

2024 iThome 鐵人賽

DAY 12
1
Python

使用 WiFiBoy Python 玩學機來學物聯網應用 系列 第 12

12. LED 燈環擴充模組應用

  • 分享至 

  • xImage
  •  

NeoPixel 燈條應用實例:

  • 穿戴設備:

在服飾或配件上嵌入 NeoPixel 燈條,創造可穿戴的 LED 服裝,常見於表演服裝或主題派對。

Neopixel LED Skirt

  • 電競和遊戲周邊:

用於背光鍵盤、滑鼠墊或遊戲主機外殼,通過軟體控制燈光效果,增強視覺體驗。

  • 智能家居照明:

NeoPixel 燈條可以用於智能家居的環境照明,通過手機應用程式或語音助理來控制燈光顏色和亮度。

Sonoff RGB LED Strip Controller, DIY

  • 節日裝飾:

在聖誕樹或其他節日裝飾品上使用 NeoPixel 燈條,通過程式控制實現多種燈光效果,增添節日氣氛。

Easy LED Holiday Light Show

  • 車輛改裝:

在汽車或自行車上安裝 NeoPixel 燈條,用於底盤燈或車內氛圍燈,通過控制器改變燈光效果,增加個性化元素。

MicroPython NeoPixel 函式庫解說

MicroPython 的 neopixel 模组是用来控制 NeoPixel LED 燈條。NeoPixel 是一種基於 WS2812 或 WS2812B LED 的可程式化 RGB LED 燈條,每個 LED 燈都包含一個控制晶片,可以獨立設定其顏色與亮度。neopixel 模组讓 MicroPython 語言環境有更便利的方式來控制 LED 燈。

WS2812B 的規格:

  • 電源電壓:通常為 5V,但也有一些 3.3V 版本。
  • 數據線:單根數據線傳輸控制信號,通常連接到 MicroPython 開發板的 GPIO 針腳上。
  • 控制方式:通過 PWM 信號傳輸 RGB 顏色數據到 LED 燈條的控制芯片。

玩學運算推出的 LED 燈環擴充版

玩學運算推出的 LED 燈環擴充版是使用 WS2812B LED,其中特別的地方是他是使用 3.3V 就能推動的版本。讓您搭配 ESP32 開發更方便。

燈環正面

燈環背面

如何啟動內建的電子骰子程式?

接上燈環擴充版,按住右邊藍色的 B 鍵,然後開機。就會叫出內建的電子骰子程式。搖動機器,燈環就會開始跑動並會發出聲音。

電子骰子執行畫面

程式碼

產生一組紅綠燈,紅燈顯示在11位置,黃燈顯示在0位置,綠燈顯示在1位置。

import time
from machine import Pin
from neopixel import NeoPixel
LED_RED = (64, 0, 0)
LED_GREEN = (0, 64, 0)
LED_BLUE = (0, 0, 64)
LED_YELLOW = (64, 64, 0)
pin = Pin(2, Pin.OUT)    
np = NeoPixel(pin, 12)
# 亮紅綠燈
np[11] =  LED_RED
np[0] =  LED_YELLOW
np[1] =  LED_GREEN
np.write() 

產生一個紅燈,每隔一秒繞著燈環跑

import time
from machine import Pin
from neopixel import NeoPixel

pin = Pin(2, Pin.OUT)    
np = NeoPixel(pin, 12)   
for i in range(0, 12):   
    np[i] = (0, 64, 0) 
    np.write()            
    time.sleep(1)
    np[i] = (0, 0, 0) 
    np.write()

寫一個紅綠燈模擬程式

import time
from machine import Pin
from neopixel import NeoPixel
pin = Pin(2, Pin.OUT)    
np = NeoPixel(pin, 12)
# 主程式
def set_light(red, yellow, green):
    """設定紅綠燈的顏色"""
    np[11] = (red, 0, 0)    # 紅燈
    np[0] = (yellow, yellow, 0)  # 黃燈
    np[1] = (0, green, 0)  # 綠燈
    np.write()

while True:
    # 紅燈亮 10 秒
    for i in range(8):
        set_light(255, 0, 0)  # 紅燈亮,黃燈和綠燈關
        time.sleep(1)
    
    # 第8秒時黃燈開始閃爍,紅燈保持亮
    for i in range(4):
        set_light(255, 255, 0)  # 紅燈和黃燈亮
        time.sleep(0.5)
        set_light(255, 0, 0)    # 紅燈亮,黃燈關
        time.sleep(0.5)

    # 綠燈亮 8 秒
    for i in range(6):
        set_light(0, 0, 255)  # 綠燈亮,紅燈和黃燈關
        time.sleep(1)

    # 第6秒時綠燈開始閃爍
    for i in range(4):
        set_light(0, 0, 255)  # 綠燈亮
        time.sleep(0.5)
        set_light(0, 0, 0)    # 所有燈都關
        time.sleep(0.5)
    # 迴圈結束後自動回到紅燈狀態

電子骰子模擬程式

# 彩燈骰子
import time
import neopixel
# 蜂鳴器啟動
machine.Pin(17, 2).value(1)
snd = machine.PWM(machine.Pin(25,2))
snd.duty(0)

def play(f, t):
    snd.freq(f); snd.duty(50)
    time.sleep(t); snd.duty(0)

# 燈環控制
numbers = 12
np = neopixel.NeoPixel(machine.Pin(2), numbers, bpp = 3)
print('請按任一鍵開始丟骰子!')
wb.cls()
while True:
    if wb.getkey() > 0:
        count = wb.rand() % 100 + 20
        for i in range(1, count):
            np[i%numbers] = (64, 0, 0)
            play(880, 0.02)
            np.write()
            wb.str(str(i%numbers), 10, 20, 2, 15)
            if i == count-1:
                print('')
            else:
                wb.cls()
            np[i%numbers] = (0, 0, 0)
            time.sleep(0.01)

執行畫面

電子骰子

執行影片

參考資料

  1. Neopixel LED Skirt
  2. Keyboard with WS2812B
  3. Home Assistant ESPHome: Sonoff RGB LED Strip Controller, DIY
  4. Easy-LED-Holiday-Light-Show
  5. Nilight Truck Bed Light Strip

上一篇
11. 玩學機開機第一件事會做什麼?
下一篇
13. 四位數七段顯示器應用
系列文
使用 WiFiBoy Python 玩學機來學物聯網應用 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言